RocketMQ 面试题
1、说说你们公司线上生产环境用的是什么消息中间件?
见【2、多个mq如何选型?】
2、多个mq如何选型?
| MQ | 描述 |
|---|---|
| RabbitMQ | erlang开发,对消息堆积的支持并不好,当大量消息积压的时候,会导致 RabbitMQ 的性能急剧下降。每秒钟可以处理几万到十几万条消息。 |
| RocketMQ | java开发,面向互联网集群化功能丰富,对在线业务的响应时延做了很多的优化,大多数情况下可以做到毫秒级的响应,每秒钟大概能处理几十万条消息。 |
| Kafka | Scala开发,面向日志功能丰富,性能最高。当你的业务场景中,每秒钟消息数量没有那么多的时候,Kafka 的时延反而会比较高。所以,Kafka 不太适合在线业务场景。 |
| ActiveMQ | java开发,简单,稳定,性能不如前面三个。小型系统用也ok,但是不推荐。推荐用互联网主流的。 |
3、为什么要使用MQ?
因为项目比较大,做了分布式系统,所有远程服务调用请求都是同步执行经常出问题,所以引入了mq
| 作用 | 描述 |
|---|---|
| 解耦 | 系统耦合度降低,没有强依赖关系 |
| 异步 | 不需要同步执行的远程调用可以有效提高响应时间 | | 削峰 | 请求达到峰值后,后端service还可以保持固定消费速率消费,不会被压垮 |